<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
<div id="Application">
  <div style="position: absolute; width: 50px">
    <my-alert></my-alert>
  </div>
</div>

<script>
  const {createApp, ref} = Vue;
  const App = createApp({})
  App.component('my-alert', {
    template: `
      <div>
        <button @click="show = true">弹出弹窗</button>
      </div>
      <teleport to="body">
        <div v-if="show"
             style="text-align: center; padding: 20px; position: absolute; top: 45%; left: 30%; width: 40%; border: black solid 2px; background-color: white">
          <h3>弹窗</h3>
          <button @click="show = false">隐藏弹窗</button>
        </div>
      </teleport>
    `,
    setup() {
      const show = ref(false)
      return {show}
    }
  })
  App.mount("#Application");
</script>
</body>
</html>